package com.auxgroup.hr.front.service.process;

import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;

import com.auxgroup.hr.front.commons.vo.AuthorityFiledVO;
import com.auxgroup.hr.front.commons.vo.UserDTO;
import com.auxgroup.hr.front.dao.domain.ProcessMapRespVO;
import com.auxgroup.hr.front.dao.domain.PsCAppStepInst;
import com.auxgroup.hr.front.dao.domain.PsCWfCatalog;
import com.auxgroup.hr.front.dao.domain.PsCWfStatusVw;
import com.auxgroup.hr.front.ws.ProcessApplyQueDTO;
import com.auxgroup.hr.front.ws.ProcessApproveQueDTO;


/** 
 * @author lvliuhao 
 * @version 创建时间：2018年5月31日 下午9:59:05 
 * 类说明 
 */
public interface ProcessService {

	/**
	 * 流程审批
	 * @param requestDTO
	 * @return
	 */
	Map<String, String> approve(ProcessApproveQueDTO requestDTO);

	/**
	 * 计算请假天数
	 * @return
	 */
	String calLeaveTime (
			String emplid, String leaveType, String applInfo,
			String appDt, String acrossDay, String beginDt,
			String leaDayA, String endDt, String leaDayB);

	/**
	 * 获取流程编号
	 * @return
	 */
	String getTranNum();
	
	/**
	 * 流程申请
	 * @param requestDTO
	 * @return
	 */
	Map<String, String> apply(ProcessApplyQueDTO requestDTO);
	
	/**
	 * 获取流程人员列表
	 * @param transNum
	 * @return
	 */
	List<List<ProcessMapRespVO>> processMap(String transNum);


	/**
	 * 已处理节点
	 * @param transNum
	 * @return
	 */
	List<ProcessMapRespVO> processedNode(String transNum);

	
	/**
	 * 构建 流程权限字段列表
	 * @param processHead entity头表
	 * @param user 用户信息
	 * @param transNum 流程编号
	 * @return 字段列表集合
	 */
	Set<AuthorityFiledVO> buildAuthFieldVo(Object processHead,UserDTO user,String transNum,Set<String> authFileds);
	
	/**
	 * 构建 流程权限字段列表
	 * @param processHead entity头表
	 * @param stepNbr 审批步骤
	 * @param transNum 流程编号
	 * @param authFileds 权限字段集合
	 * @return
	 */
	Set<AuthorityFiledVO> buildAuthFieldVo(Object processHead,String stepNbr,String transNum,Set<String> authFileds);
	
	/**
	 * 获取用户的待审批流程审批步骤
	 * @param transNum 流程编号
	 * @param user  用户信息
	 * @return
	 */
	PsCAppStepInst getStepInst(String transNum,UserDTO user);
	
	/**
	 * 获取待办事项列表
	 * @return
	 */
	List<PsCWfStatusVw> getTODOlist(PsCWfStatusVw wfStatus);
	
	
	/**
	 * 获取已审批列表
	 * @return
	 */
	public List<PsCWfStatusVw> getApprovedlist(PsCWfStatusVw wfStatus);
	
	
	/**
	 * 查询我的申请列表
	 * @param user
	 * @return
	 */
	public List<PsCWfCatalog> getMyCreatedProcess(PsCWfCatalog queryCata);

}
 